Αυτή η ερώτηση έχει ήδη απαντήσεις εδώ: Αντιστρέψτε μια συμβολοσειρά στο Python (29 απαντήσεις) Κλειστό πριν από 4 χρόνια. Προσπαθώ να αντιστρέψω μια συμβολοσειρά και να χρησιμοποιήσω τον παρακάτω κώδικα, αλλά η προκύπτουσα τιμή αντίστροφης λίστας είναι Καμία. Ο κώδικας: str_a = "Αυτό είναι αναδευτικό" rev_word = str_a.split () rev_word = rev_word.reverse () rev_word = ".join (rev_word) Επιστρέφει το TypeError. Γιατί;
2021-01-15 08:10:48
.reverse () επιστρέφει Κανένα. Επομένως, δεν πρέπει να το εκχωρείτε σε μια μεταβλητή. Χρησιμοποιήστε το αντί αυτού: stra = "Αυτή είναι μια συμβολοσειρά" revword = stra.split () revword.reverse () revword = ''. εγγραφή (revword) Έχω τρέξει τον κωδικό στο IDEOne για εσάς, ώστε να μπορείτε να δείτε την έξοδο. (Σημειώστε επίσης ότι η έξοδος είναι stringaisThis; ίσως θελήσετε να χρησιμοποιήσετε το ".join (revword), με κενό διάστημα.) Σημειώστε επίσης ότι η μέθοδος που παρείχατε αντιστρέφει μόνο τις λέξεις και όχι το κείμενο. Ο @ ron.rothman παρείχε έναν σύνδεσμο που περιγράφει λεπτομερώς πώς να αντιστρέψει μια συμβολοσειρά στο σύνολό της. | Αυτός είναι ο προσωπικός μου αγαπημένος τρόπος για να αντιστρέψω μια χορδή: stra = "Αυτή είναι μια συμβολοσειρά" revword = stra [:: - 1] εκτύπωση (revword) # "gnirts a si sihT ή, εάν θέλετε να αντιστρέψετε τη σειρά λέξεων: revword = "" .join (stra.split () [:: - 1]) εκτύπωση (revword) # "string a is This" :) | Διάφορες αντιστροφές σε μια συμβολοσειρά: instring = "Αυτή είναι μια συμβολοσειρά" reversedstring = instring [:: - 1] εκτύπωση reversedstring # gnirts a si sihT wordsreversed = ".join (λέξη [:: - 1] για τη λέξη στο instring.split ()) εκτύπωση λέξεων αντιστράφηκε # sih a si gnirts revwordorder = ".join (λέξη προς λέξη στο instring.split () [:: - 1]) εκτύπωση revwordorder # string a is This revwordandorder = ".join (λέξη [:: - 1] για τη λέξη στο instring.split () [:: - 1]) εκτύπωση revwordandorder # gnirts a si sihT | Για μελλοντική αναφορά όταν ένα αντικείμενο έχει μια μέθοδο όπως [] .reverse () εκτελεί γενικά αυτήν την ενέργεια στο αντικείμενο (δηλ. Η λίστα ταξινομείται και δεν επιστρέφει τίποτα, κανένα) σε αντίθεση με τις ενσωματωμένες συναρτήσεις όπως ταξινομημένες οι οποίες εκτελούν μια ενέργεια σε ένα αντικείμενο και επιστρέφει μια τιμή (δηλ. η ταξινομημένη λίστα) | >>> s = "αυτή είναι μια συμβολοσειρά" >>> s [:: - 1] «στοιχειά ένα si siht» >>> ".join (αντιστράφηκε) «στοιχειά ένα si siht» | Το for loop επαναλαμβάνει τη συμβολοσειρά από το τέλος (τελευταίο γράμμα) στην αρχή (πρώτο γράμμα) >>> s = "Μπορείτε να το δοκιμάσετε και αυτό:]" >>> rev = " >>> για i in range (len (s) - 1, -1, -1): ... rev + = s [i] >>> αναθ ']: oot siht yrt nac uoY' | Με βάση σχόλια και άλλες απαντήσεις: str_a = "αυτή είναι μια συμβολοσειρά" rev_word = ".join (αντιστράφηκε (str_a.split ())) Η αλυσίδα μεθόδου λειτουργεί στο Python μετά από όλα ... | Η αντιστροφή λίστας μπορεί να γίνει χρησιμοποιώντας περισσότερους από έναν τρόπους. Όπως αναφέρθηκε στις προηγούμενες απαντήσεις, δύο είναι πολύ εμφανείς, μία με λειτουργία αντίστροφης () και δύο με δυνατότητα κοπής. Δίνω κάποιες πληροφορίες για το ποια πρέπει να προτιμούμε. Πρέπει πάντα να χρησιμοποιούμε τη λειτουργία αντίστροφης () για αντιστροφή μιας λίστας Python. Δύο λόγοι, ένας επί τόπου αντιστροφή και δύο γρηγορότεροι από άλλους. Έχω κάποια στοιχεία για να υποστηρίξω την απάντησή μου, Σε [15]: len (l) Έξω [15]: 1000 Σε [16]:% timeit -n1 l.reverse () 1 βρόχους, καλύτερο από 3: 7,87 μs ανά βρόχο Σε [17]:% timeit -n1 l [:: - 1] 1 βρόχους, καλύτερα από 3: 10 μs ανά βρόχο Για 1000 ακέραιες λίστες, η αντίστροφη () λειτουργία είχε καλύτερη απόδοση σε σύγκριση με το τεμαχισμό. | Δεν είναι η απάντηση που ψάχνετε; Περιηγηθείτε σε άλλες ερωτήσεις με ετικέτα python ή κάντε τη δική σας ερώτηση.